package com.fyl.leetcode.greedy;

/**
 * @author:fyl
 * @date 2021/5/9 9:21
 * @Modified By:
 * @Modified Date:
 * @Description:
 * 一次股票交易包含买入和卖出，只进行一次交易，求最大收益。
 * 示例 1：
 *
 * 输入：[7,1,5,3,6,4]
 * 输出：5
 * 解释：在第 2 天（股票价格 = 1）的时候买入，在第 5 天（股票价格 = 6）的时候卖出，最大利润 = 6-1 = 5 。
 *      注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格；同时，你不能在买入前卖出股票。
 *
 *思路：
 * 只要记录前面的最小价格，将这个最小价格作为买入价格，然后将当前的价格作为售出价格，查看当前收益是不是最大收益。
 */
public class BestTimeoutBandSellStock {
    //暴力法
//    public int maxProfit(int[] prices) {
//        int max = 0;
//        for (int i = 0; i < prices.length; i++) {
//            for (int j = i + 1; j < prices.length; j++) {
//                if ((prices[j] - prices[i]) > max) {
//                    max = prices[j] - prices[i];
//                }
//            }
//        }
//
//        return max;
//    }
    public int maxProfit(int[] prices) {
        if (prices.length == 0) return 0;
        int min = prices[0];
        int max = 0;
        for (int i = 0; i < prices.length; i++) {
            if (min > prices[i]) {
                min = prices[i];
            } else {
                max = Math.max(max, prices[i] - min);
            }
        }
        return max;
    }
}
